#ifndef EDGE3D_H
#define EDGE3D_H

#include <QVector3D>

class Edge3D;

uint qHash(const Edge3D& rkEdge);

class Edge3D
{
public:
    Edge3D(const QVector3D& rkFirst, const QVector3D& rkSecond);
    ~Edge3D();

    Edge3D(const Edge3D& rkOther);
    Edge3D& operator = (const Edge3D& rkOther);

    bool isValid() const;

    const QVector3D& p1() const;
    const QVector3D& p2() const;

    qreal x1() const;
    qreal y1() const;
    qreal z1() const;
    qreal x2() const;
    qreal y2() const;
    qreal z2() const;

    QVector3D toVector3D() const;

    bool operator == (const Edge3D& rkOther) const;
    bool operator != (const Edge3D& rkOther) const;

private:
    const QVector3D* m_pkP1;
    const QVector3D* m_pkP2;
};

#endif // EDGE3D_H
